/*
 * Created by SharpDevelop.
 * user: Robertux
 * Date: 19/03/2008
 * Time: 21:17
 * 
 * 
 */

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
using DataLayer;
using Inventador;

namespace WinApp
{
	/// <summary>
	/// Description of frmAddEditProductos.
	/// </summary>
	public partial class frmAddEditProductos : Form
	{
		private BaseDatos bdatos;
		private Producto prd;
		private DialogResult _result;
		private List<MarcaProducto> marcas;
		private List<TipoProducto> tipos;
		
		public DialogResult Result
		{
			get { return this._result; }
		}
		
		public frmAddEditProductos()
		{
			InitializeComponent();
		}
		
		public frmAddEditProductos(BaseDatos bdatosExterna, Producto pPrdct): this()
		{
			this.bdatos = bdatosExterna;
			this.prd = pPrdct;
			this.marcas = MarcaProducto.GetList(this.bdatos, "id != 0");
			this.tipos = TipoProducto.GetList(this.bdatos, "id != 0");
			this.RellenarMarcas();
			this.RellenarTipos();
			if(this.prd == null)
				this.Text = "Agregar un nuevo producto";
			else
			{
				this.Text = "Editar producto existente";
				for(int i = 0; i<this.comboBox1.Items.Count; i++)
				{
					if(this.prd.fkMarcaProducto.Nombre == this.comboBox1.Items[i].ToString())
					{
						this.comboBox1.SelectedIndex = i;
						break;
					}
				}
				for(int j = 0; j<this.comboBox2.Items.Count; j++)
				{
					if(this.prd.fkTipoProducto.Nombre == this.comboBox2.Items[j].ToString())
					{
						this.comboBox2.SelectedIndex = j;
						break;
					}
				}
				this.numericUpDown1.Value = (decimal)this.prd.ExistenciaMinima;
				this.textBox1.Text = this.prd.Descripcion;
			}
			this._result = DialogResult.Cancel;
		}
		
		public void RellenarMarcas()
		{
			this.comboBox1.Items.Clear();
			foreach(MarcaProducto mrk in this.marcas)
				this.comboBox1.Items.Add(mrk.Nombre);
			this.comboBox1.SelectedIndex = 0;
		}
		
		public void RellenarTipos()
		{
			this.comboBox2.Items.Clear();
			foreach(TipoProducto tipo in this.tipos)
				this.comboBox2.Items.Add(tipo.Nombre);
			this.comboBox2.SelectedIndex = 0;
		}
		
		void Button1Click(object sender, EventArgs e)
		{
			this.Close();
		}
		
		void Button2Click(object sender, EventArgs e)
		{
			if(this.prd == null)
			{
				int maxId = Producto.GetMaxId(this.bdatos);
				this.prd = new Producto(maxId + 1, this.tipos[this.comboBox2.SelectedIndex], this.marcas[this.comboBox1.SelectedIndex], 0, int.Parse(this.numericUpDown1.Value.ToString()), this.textBox1.Text);
				this.prd.Insert(this.bdatos);
			}
			else
			{
				this.prd.fkTipoProducto = this.tipos[this.comboBox2.SelectedIndex];
				this.prd.fkMarcaProducto = this.marcas[this.comboBox1.SelectedIndex];
				this.prd.ExistenciaMinima = int.Parse(this.numericUpDown1.Value.ToString());
				this.prd.Descripcion = this.textBox1.Text;
				this.prd.Update(this.bdatos);
			}
			this._result = DialogResult.OK;
			this.Close();
		}
	}
}
